﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;

namespace QLHPHP
{
    public partial class KhoaNganhControl : UserControl
    {
        //AppCommands _CommandsTK = null;
        public KhoaNganhControl()
        {
            InitializeComponent();
        }

        private AppCommands _Commands;

        /// <summary>
        /// Gets or sets the commands associated with the control.
        /// </summary>
        public AppCommands Commands
        {
            get { return _Commands; }
            set
            {
                if (value != _Commands)
                {
                    AppCommands oldValue = _Commands;
                    _Commands = value;
                    OnCommandsChanged(oldValue, value);
                }
            }
        }
        /// <summary>
        /// Called when Commands property has changed.
        /// </summary>
        /// <param name="oldValue">Old property value</param>
        /// <param name="newValue">New property value</param>
        protected virtual void OnCommandsChanged(AppCommands oldValue, AppCommands newValue)
        {
            if (newValue != null)
            {
                //DongButton.Command = newValue.KhoaNganhControlCommands.Cancel;
                DongButton.Command = newValue.KhoaNganhCommands.Cancel;
            }
            else
            {
                DongButton.Command = null;
                
            }
        }

        private void KhoaNganhControl_Load(object sender, EventArgs e)
        {
            LoadListKhoaInCbb();
            UpdateListNganh();
            //Load danh sach khoa len dataGridView
            //dgvKhoa.DataSource = Khoa.LayDsKhoa();
            LoadListKhoa();
        }
        // Load list khoa vao dataGridView
        public void LoadListKhoa()
        {
            dgvKhoa.DataSource = Khoa.LayDsKhoa();
        }
        /// <summary>
        /// Cập nhật danh sách
        /// </summary>
        private void UpdateListNganh()
        {
            try
            {
                string id = cbKhoa.SelectedValue.ToString();
                dgvNganh.DataSource = Nganh.LayNganhTheoKhoa(id);
            }
            catch
            {
                ToastNotification.Show(this, "Có lỗi trong quá trình lấy dữ liệu!");
                //MessageBox.Show("Có lỗi trong quá trình lấy dữ liệu, chương trình sẽ thoát!", "Lỗi",
                                       //MessageBoxButtons.OK, MessageBoxIcon.Error);
                //Application.Exit();
            }
        }

        /// <summary>
        /// Tải danh sách khoa vào combobox
        /// </summary>
        private void LoadListKhoaInCbb()
        {
            try
            {
                cbKhoa.DataSource = Khoa.LayDsKhoa();
                cbKhoa.ValueMember = "MaKhoa";
                cbKhoa.DisplayMember = "TenKhoa";
            }
            catch
            {
                ToastNotification.Show(this,"Có lỗi trong quá trình lấy dữ liệu!");
                //MessageBox.Show("Có lỗi trong quá trình lấy dữ liệu, chương trình sẽ thoát!", "Lỗi",
                        //MessageBoxButtons.OK, MessageBoxIcon.Error);
                //Application.Exit();
            }
        }

        private void buttonThemKhoa_Click(object sender, EventArgs e)
        {
            buttonThemKhoa.Command = _Commands.ThemKhoaCommands.New;
        }

        private void buttonLamMoiKhoa_Click(object sender, EventArgs e)
        {
            dgvKhoa.DataSource = Khoa.LayDsKhoa();
            ToastNotification.Show(this,"Đã Cập Nhật!");
        }

        private void buttonXoaKhoa_Click(object sender, EventArgs e)
        {
            string id = dgvKhoa.CurrentRow.Cells[0].Value.ToString();
            string name = dgvKhoa.CurrentRow.Cells[1].Value.ToString();
            if (id != "")
            {
                if (Khoa.KTKhoaCoChuaNganh(id) == false)
                {
                    try
                    {
                        Khoa.XoaKhoa(id);
                        dgvKhoa.DataSource = Khoa.LayDsKhoa();
                        ToastNotification.Show(this, "Đã xóa khoa "+ name +" thành công");
                        //MessageBox.Show("Đã xóa thành công khoa " + name + " ", "Thông báo",
                            //MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    catch
                    {
                        ToastNotification.Show(this, "Lỗi!");
                        //MessageBox.Show("Lỗi!", "Lỗi",
                            //MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    ToastNotification.Show(this, "Lỗi! Khoa "+name+" có chứa các ngành nên không thể xóa được!");
                    //MessageBox.Show("Khoa " + name + " hiện có chứa các ngành nên không thể xóa được!", "Lỗi",
                        //MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                ToastNotification.Show(this, "Vui lòng chọn Khoa để xóa!");
                //MessageBox.Show("Vui lòng chọn khoa để xóa!", "Lỗi",
                        //MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void cbKhoa_SelectedValueChanged(object sender, EventArgs e)
        {
            UpdateListNganh();

        }

        private void buttonThemNganh_Click(object sender, EventArgs e)
        {
            buttonThemNganh.Command = _Commands.ThemNganhCommands.New;
        }

        private void buttonXoaNganh_Click(object sender, EventArgs e)
        {
            string id = dgvNganh.CurrentRow.Cells[0].Value.ToString();
            string name = dgvNganh.CurrentRow.Cells[1].Value.ToString();
            if (Nganh.KTNganhChuaMonHoc(id))
            {
                ToastNotification.Show(this,"Ngành đang chứa các môn học không thể xóa!");
                //MessageBox.Show("Ngành hiện chứa các môn học nên không thể xóa!", "Lỗi",
                        //MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                try
                {
                    Nganh.XoaNganh(id);
                    ToastNotification.Show(this,"Xóa ngành "+name+" thành công!");
                    //MessageBox.Show("Xóa thành công!", "Thông báo", MessageBoxButtons.OK,
                        //MessageBoxIcon.Information);
                }
                catch
                {
                    ToastNotification.Show(this,"Lỗi trong quá trình kết nối csdl!");
                    //MessageBox.Show("Có lỗi trong quá trình kết nối cơ sở dữ liệu!", "Lỗi",
                       //MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private void buttonLamMoiNganh_Click(object sender, EventArgs e)
        {
            UpdateListNganh();
            ToastNotification.Show(this,"Đã Cập Nhật!");
        }

        private void btnChiTietNganh_Click(object sender, EventArgs e)
        {
            btnChiTietNganh.Command = _Commands.ChiTietNganhCommands.New;
        }

        


    }
}
